API Documentation
Shader.h
1 // Shader.h
3 //
5 
6 namespace nkGraphics
7 {
13  class DLL_GRAPHICS_EXPORT Shader : public Resource, public nkExport::Exportable
14  {
15  public :
16 
20  Shader () ;
24  virtual ~Shader () ;
25 
26  // Getters
30  unsigned int getId () const ;
34  bool isUsableScene () const ;
38  bool isUsablePostProcess () const ;
42  bool isUsableCompute () const ;
46  bool isUsableGeometry () const ;
50  bool isUsableRaytracing () const ;
58  unsigned int getMaxInstancePerBuffer () const ;
62  bool getDirtyInstanceData () const ;
63 
64  // Setters
68  virtual void setAttachedShaderProgram (Program* prog) ;
72  void setId (unsigned int id) ;
80  virtual void setMaxInstancePerBuffer (unsigned int value) ;
86  void setDirtyInstanceData (bool value) ;
87 
93  virtual bool load () override ;
97  virtual void unload () override ;
98 
99  // Constant buffers
107  ConstantBuffer* addConstantBuffer (unsigned int registerSlot, unsigned int space = 0) ;
113  ConstantBuffer* getConstantBuffer (unsigned int slot, unsigned int space = 0) const ;
121  void changeConstantBufferSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
129  void changeConstantBufferSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot) ;
136  void deleteConstantBuffer (unsigned int slot, unsigned int space = 0) ;
145  const ConstantBufferResourceDesc* getConstantBufferPerIndex (unsigned int index) const ;
146 
147  // Textures
155  void addTexture (ShaderResource* texOrUav, unsigned int registerSlot, unsigned int space = 0) ;
161  ShaderResource* getTexture (unsigned int slot, unsigned int space = 0) const ;
169  void setTexture (ShaderResource* texOrUav, unsigned int slot, unsigned int space = 0) ;
177  void changeTextureSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
185  void changeTextureSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot) ;
192  void forgetTexture (unsigned int slot, unsigned int space = 0) ;
201  const ShaderResourceDesc* getTexturePerIndex (unsigned int index) const ;
202 
203  // Samplers
211  void addSampler (Sampler* sampler, unsigned int registerSlot, unsigned int space = 0) ;
217  Sampler* getSampler (unsigned int slot, unsigned int space = 0) const ;
225  void setSampler (Sampler* sampler, unsigned int slot, unsigned int space = 0) ;
233  void changeSamplerSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
241  void changeSamplerSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot = 0) ;
248  void forgetSampler (unsigned int slot, unsigned int space = 0) ;
257  const SamplerResourceDesc* getSamplerPerIndex (unsigned int index) const ;
258 
259  // UAV
267  void addUavBuffer (Buffer* buffer, unsigned int registerSlot, unsigned int space = 0) ;
273  Buffer* getUavBuffer (unsigned int slot, unsigned int space = 0) const ;
281  void setUavBuffer (Buffer* buffer, unsigned int slot, unsigned int space = 0) ;
289  void changeUavBufferSlot (unsigned int fromSlot, unsigned int toSlot, unsigned int space = 0) ;
297  void changeUavBufferSpace (unsigned int fromSpace, unsigned int toSpace, unsigned int slot = 0) ;
304  void forgetUavBuffer (unsigned int slot, unsigned int space = 0) ;
313  const UavResourceDesc* getUavBufferPerIndex (unsigned int index) const ;
314 
315  // Instance data
329  virtual ShaderInstanceMemorySlot* getInstanceMemorySlot (unsigned int index) ;
337  virtual ShaderInstanceMemorySlot* getInstanceMemorySlotReadOnly (unsigned int index) const ;
344  virtual void changeInstanceMemorySlotOrder (unsigned int fromIndex, unsigned int toIndex) ;
350  virtual void deleteInstanceMemorySlot (unsigned int index) ;
351 
357  virtual void exportClassToTree (nkExport::Node* rootNode) override ;
363  virtual void importClassFromTree (nkExport::Node* rootNode) override ;
364  } ;
365 }
nkGraphics::Shader::changeInstanceMemorySlotOrder
virtual void changeInstanceMemorySlotOrder(unsigned int fromIndex, unsigned int toIndex)
nkGraphics::Shader::getDirtyInstanceData
bool getDirtyInstanceData() const
nkGraphics::Shader::unload
virtual void unload() override
nkGraphics::Shader::isUsableRaytracing
bool isUsableRaytracing() const
nkGraphics::Program
Holds all information, and manages the compilation of GPU programs.
Definition: Program.h:12
nkGraphics::Shader::addSampler
void addSampler(Sampler *sampler, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::changeTextureSpace
void changeTextureSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot)
nkGraphics::Shader::changeUavBufferSpace
void changeUavBufferSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot=0)
nkGraphics::Shader::getSampler
Sampler * getSampler(unsigned int slot, unsigned int space=0) const
nkGraphics::Shader::getConstantBufferPerIndex
const ConstantBufferResourceDesc * getConstantBufferPerIndex(unsigned int index) const
nkGraphics::Shader::deleteInstanceMemorySlot
virtual void deleteInstanceMemorySlot(unsigned int index)
nkGraphics::ShaderBoundResourceDesc
Holds information about a resource linked in a shader for feeding.
Definition: ShaderResourceDesc.h:13
nkGraphics::Shader::setTexture
void setTexture(ShaderResource *texOrUav, unsigned int slot, unsigned int space=0)
nkExport::Exportable
An interface to define objects that can be exported using this component.
Definition: Exportable.h:15
nkGraphics::Shader::changeUavBufferSlot
void changeUavBufferSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Shader::changeTextureSlot
void changeTextureSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Buffer
A buffer that will reside on the GPU.
Definition: Buffer.h:15
nkGraphics::Shader::addInstanceMemorySlot
virtual ShaderInstanceMemorySlot * addInstanceMemorySlot()
nkGraphics::Shader::setAttachedShaderProgram
virtual void setAttachedShaderProgram(Program *prog)
nkGraphics::Shader::setUavBuffer
void setUavBuffer(Buffer *buffer, unsigned int slot, unsigned int space=0)
nkGraphics::Shader::forgetSampler
void forgetSampler(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::setMaxInstancePerBuffer
virtual void setMaxInstancePerBuffer(unsigned int value)
nkGraphics::Shader::changeConstantBufferSlot
void changeConstantBufferSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::Shader::getInstanceMemorySlotReadOnly
virtual ShaderInstanceMemorySlot * getInstanceMemorySlotReadOnly(unsigned int index) const
nkGraphics::Shader::getConstantBuffer
ConstantBuffer * getConstantBuffer(unsigned int slot, unsigned int space=0) const
nkGraphics::Shader::getInstanceMemorySlot
virtual ShaderInstanceMemorySlot * getInstanceMemorySlot(unsigned int index)
nkGraphics::Shader::forgetTexture
void forgetTexture(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::changeConstantBufferSpace
void changeConstantBufferSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot)
nkGraphics::Shader
A shader class, feeding data to a Program.
Definition: Shader.h:14
nkGraphics::Shader::getSamplerPerIndex
const SamplerResourceDesc * getSamplerPerIndex(unsigned int index) const
nkGraphics::Shader::setDirtyInstanceData
void setDirtyInstanceData(bool value)
nkGraphics::Shader::getMaxInstancePerBuffer
unsigned int getMaxInstancePerBuffer() const
nkGraphics::Shader::isUsableGeometry
bool isUsableGeometry() const
nkGraphics::Shader::importClassFromTree
virtual void importClassFromTree(nkExport::Node *rootNode) override
nkGraphics::Shader::deleteConstantBuffer
void deleteConstantBuffer(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::Shader
Shader()
nkExport::Node
A node in the tree structure representing the data to export / import.
Definition: Node.h:42
nkGraphics::Shader::setId
void setId(unsigned int id)
nkGraphics::Shader::exportClassToTree
virtual void exportClassToTree(nkExport::Node *rootNode) override
nkGraphics::Shader::setSampler
void setSampler(Sampler *sampler, unsigned int slot, unsigned int space=0)
nkGraphics::Shader::addTexture
void addTexture(ShaderResource *texOrUav, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::getUavBuffer
Buffer * getUavBuffer(unsigned int slot, unsigned int space=0) const
nkGraphics::Sampler
Holds all the information needed of a sampler used during rendering.
Definition: Sampler.h:12
nkGraphics::Shader::addUavBuffer
void addUavBuffer(Buffer *buffer, unsigned int registerSlot, unsigned int space=0)
nkGraphics::Resource
Base class for a resource in the component.
Definition: Resource.h:12
nkGraphics::Shader::isUsableScene
bool isUsableScene() const
nkGraphics::Shader::changeSamplerSpace
void changeSamplerSpace(unsigned int fromSpace, unsigned int toSpace, unsigned int slot=0)
nkGraphics::Shader::isUsablePostProcess
bool isUsablePostProcess() const
nkGraphics::Shader::isUsableCompute
bool isUsableCompute() const
nkGraphics::Shader::addConstantBuffer
ConstantBuffer * addConstantBuffer(unsigned int registerSlot, unsigned int space=0)
nkGraphics::Shader::forgetUavBuffer
void forgetUavBuffer(unsigned int slot, unsigned int space=0)
nkGraphics::Shader::getTexturePerIndex
const ShaderResourceDesc * getTexturePerIndex(unsigned int index) const
nkGraphics::Shader::getUavBufferPerIndex
const UavResourceDesc * getUavBufferPerIndex(unsigned int index) const
nkGraphics
Encompasses all API of component NilkinsGraphics.
Definition: BoundingBox.h:7
nkGraphics::ConstantBuffer
Describes a constant buffer.
Definition: ConstantBuffer.h:12
nkGraphics::Shader::getAttachedShaderProgram
Program * getAttachedShaderProgram() const
nkGraphics::Shader::~Shader
virtual ~Shader()
nkGraphics::Shader::getId
unsigned int getId() const
nkGraphics::Shader::getTexture
ShaderResource * getTexture(unsigned int slot, unsigned int space=0) const
nkGraphics::ShaderInstanceMemorySlot
A memory slot for per instance data in a Shader.
Definition: ShaderInstanceMemorySlot.h:14
nkGraphics::Shader::load
virtual bool load() override
nkGraphics::Shader::changeSamplerSlot
void changeSamplerSlot(unsigned int fromSlot, unsigned int toSlot, unsigned int space=0)
nkGraphics::ShaderResource
Base class for shader resources. Those are resources that can be fed to a Shader.
Definition: ShaderResource.h:12